_CM_KEY_CONTROL_BLOCK

//0xb0 bytes (sizeof) struct _CM_KEY_CONTROL_BLOCK { ULONG RefCount; //0x0 ULONG ExtFlags:16; //0x4 ULONG Freed:1; //0x4 ULONG Discarded:1; //0x4 ULONG HiveUnloaded:1; //0x4 ULONG Decommissioned:1; //0x4 ULONG SpareExtFlag:1; //0x4 ULONG TotalLevels:10; //0x4 union { struct _CM_KEY_HASH KeyHash; //0x8 struct { struct _CM_PATH_HASH ConvKey; //0x8 struct _CM_KEY_HASH* NextHash; //0xc struct _HHIVE* KeyHive; //0x10 ULONG KeyCell; //0x14 }; }; struct _EX_PUSH_LOCK KcbPushlock; //0x18 union { struct _KTHREAD* Owner; //0x1c LONG SharedCount; //0x1c }; UCHAR DelayedDeref:1; //0x20 UCHAR DelayedClose:1; //0x20 UCHAR Parking:1; //0x20 UCHAR LayerSemantics; //0x21 SHORT LayerHeight; //0x22 struct _CM_KEY_CONTROL_BLOCK* ParentKcb; //0x24 struct _CM_NAME_CONTROL_BLOCK* NameBlock; //0x28 struct _CM_KEY_SECURITY_CACHE* CachedSecurity; //0x2c struct _CHILD_LIST ValueList; //0x30 struct _CM_KEY_CONTROL_BLOCK* LinkTarget; //0x38 union { struct _CM_INDEX_HINT_BLOCK* IndexHint; //0x3c ULONG HashKey; //0x3c ULONG SubKeyCount; //0x3c }; union { struct _LIST_ENTRY KeyBodyListHead; //0x40 struct _LIST_ENTRY ClonedListEntry; //0x40 }; struct _CM_KEY_BODY* KeyBodyArray[4]; //0x48 union _LARGE_INTEGER KcbLastWriteTime; //0x58 USHORT KcbMaxNameLen; //0x60 USHORT KcbMaxValueNameLen; //0x62 ULONG KcbMaxValueDataLen; //0x64 ULONG KcbUserFlags:4; //0x68 ULONG KcbVirtControlFlags:4; //0x68 ULONG KcbDebug:8; //0x68 ULONG Flags:16; //0x68 struct _CM_KCB_LAYER_INFO* LayerInfo; //0x6c struct _LIST_ENTRY KCBUoWListHead; //0x70 union { struct _LIST_ENTRY DelayQueueEntry; //0x78 volatile UCHAR* Stolen; //0x78 }; struct _CM_TRANS* TransKCBOwner; //0x80 struct _CM_INTENT_LOCK KCBLock; //0x84 struct _CM_INTENT_LOCK KeyLock; //0x8c struct _CHILD_LIST TransValueCache; //0x94 struct _CM_TRANS* TransValueListOwner; //0x9c union { struct _UNICODE_STRING* FullKCBName; //0xa0 struct { ULONG FullKCBNameStale:1; //0xa0 ULONG Reserved:31; //0xa0 }; }; ULONGLONG SequenceNumber; //0xa8 };